<?php
namespace app\admin\controller;

class Form extends \think\Controller
{
    /**
     * 根据数组生成表单
     * @param   array $tagsArr  待生成表单的数组
     * @param   array $valueArr 默认数据数组
     * @return  array
     */
    public function createForm($tagsArr, $valueArr=[], $flag='value')
    {
        if(empty($tagsArr))
            return [];
        $formArr = [];
        $i=0;
        foreach($tagsArr as $key => $item){
            ++$i;
            $assign = [
                'key'   =>  $flag.'['.$key.']',
                'i'     =>  $i,
                'name'  =>  $item['tag_name'],
                'value' =>  null,
            ];
            //传入对应的value作为表单的默认值
            if(isset($valueArr[$key]))
                $assign['value']    = $valueArr[$key];
            //赋值tags的配置数组，预留用于单选框多选框等部分
            if(!empty($item['option']))
                $assign['option']   = $item['option'];
            $tpl = PLUGINS_PATH.$item['tag_type'].'.html';
            if(!is_file($tpl))
                $formArr[$item['tag_name']] = "未找到插件：<span style=\"color:red\">".$item['tag_type']."</span>";
            else
                $formArr[$item['tag_name']] = $this->fetch($tpl, $assign);
        }
        return $formArr;
    }

    /**
     * 获取表单中的值生成的JSON
     * @param   str $flag 默认数据数组
     * @return  array
     */
    public function getValue($flag='value')
    {
        $valueArr = isset($_POST[$flag])? $_POST[$flag]: [];
        return json_encode($valueArr);
    }
}

